#ifndef QQ_SYSTEM_API
#define QQ_SYSTEM_API

#include <qcryptographichash.h>
#include <qdebug.h>
#include <qdir.h>
#include <qfile.h>
#include <qgraphicseffect.h>
#include <qgraphicsitem.h>
#include <qgraphicsscene.h>
#include <qmimedatabase.h>
#include <qpainter.h>
#include <qsharedmemory.h>
#include <qstring.h>
#include <qstringlist.h>
#include <qsysinfo.h>
#include <qthread.h>
#include <qwidget.h>
#include <qrandom.h>

#include <stdio.h>

#ifdef Q_OS_WIN
#include <objbase.h>
#elif Q_OS_UNIX
#include <uuid/uuid.h>
#endif

#include <qrcodegen.hpp>

namespace QQSystemApi
{
	QString getDeviceUuid();

	bool checkUniqueProcessAccount(const QString& account);

	void exitClearSharedMemory(const QString& account);

	QImage applyEffectToImage(QImage image, QGraphicsEffect* effect, int extent = 0);

	QPixmap applyEffectToPixmap(QPixmap pixmap, QGraphicsEffect* effect, int extent = 0);

	QPixmap applyEffectToPixmap(QPixmap pixmap, int radius, int extent = 0, QColor defaultColor = Qt::transparent);

	QMimeType getFileMimeType(const QString& filename);

	bool mouseInWidget(QWidget* widget);

	bool posInWidget(QWidget* widget, QPoint point);

	QString generateAbsoluteUuidByStringList(const QStringList& list);

	QString generateFileUniqueKey(const QString& filename);

	int getCpuCoreCount();

	QImage generateQrCode(const QString& url, int size = 256);

	QString generateRandomText(int min, int max);

	QString getFileSizeString(qint64 size);
}

#endif // !QQ_SYSTEM_API